Nib Notes is a tool for writing linked text in plain language. Focus on writing, not coding. Think of it as theatre: write scenes to perform on stage. You have a story world to build, Nib Notes has the tools to help.
Type scenes in the script panel (to show it, tap the Show button). To create a scene, start a new line with the title in uppercase. To create a link, type text in uppercase. If there is a scene by that name, it will automatically connect.
SCENE ONE
It was a dark and STORMY NIGHT. ⬅︎ LINK
STORMY NIGHT ⬅︎ TITLE
Suddenly … a shot rang out.
To start your story at a specific scene, prefix the scene title with the @ symbol. When you start the story, it will begin at the bookmarked scene if it exists; otherwise, the story will start at the first scene.
TWO CITIES
It was the BEST of times. It was the WORST of times.
@BEST ⬅︎ bookmarked, the story will start at this scene
It was the age of wisdom.
WORST
It was the age of foolishness.
When you edit the script, the stage displays the scenes and their names. That makes it easy to navigate the story and make changes. Remember to press Start.
Use the Flip button to go back one scene. This is helpful when testing links, like keeping a thumb on one page in a choose-your-own in case you don't like the outcome and want to flip back.
V. 0.4 2025 Mar 25
Nib Notes copyright (c) 2025 Roger Kenyon. The characters and events portrayed in this work are fictitious. Any similarity to real persons, living or dead, is purely coincidental.
This software is open-source and licensed under the MIT License for personal use.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Nib Notes markdown refers to marks in the script that change appearance on the stage. Markdown affects only the way text looks. To change the way it acts, see the Action tab.
Headings can be used for titles, sections, or scene locations. To make a heading (level 1 to 6) prefix the script text with that many # hashtags. Headings 1 and 2 are centred; all others, left-justified.
Bold text between ** double asterisks.
Bold Text ⬅︎ **Bold Text**
Italicize text between _ underscores.
Italicize Text ⬅︎ _Italicize Text_
Highlight text between == double equals signs.
Highlight Text ⬅︎ ==Highlight Text==
List items with a • bullet.
• Butter ⬅︎ • Butter
• Milk
• Eggs
Mark custom lists ^[🌀 like this], where 🌀 is a digit or symbol.
^[4 custom numbers, start anywhere]
^[5 custom numbers] ⬅︎ digit or symbol followed by a space
^[6 custom numbers]
^[😊 An emoji list, same or different]
^[😶 An emoji list]
^[😎 An emoji list]
❝ So many books, so little time ❞ // ^[— Frank Zappa]
⬅︎ em dash before source
^[▶︎ Point 1]
^[▶︎ Point 2]
^[✔︎ Butter]
^[✔︎ Milk]
^[▫️ Eggs]
For single spaced lines use double slashes.
⬇︎ for single spaced lines //such as in verse //use double slashes
for single spaced lines
such as in verse
use double slashes
Horizontal rules visually indicate a shift in content.
Useful for section changes or to introduce a footnote.
⬆︎ create in the script panel with three --- dashes
Place words said in quotation marks and on their own line. Nib Notes will take care of the graphics and animation. Speech balloons can contain context links.
"Left speaker text." ⬅︎ double quotation marks
'Right speaker text to NEXT SCENE.' ⬅︎ single quotation marks
Alias links conceal where the link is going—useful in a quiz. If in a scene, it must be placed at the end.
: Use the gold key >[DARK CASTLE]
⬆︎ “Use the gold key” links to the DARK CASTLE scene
If on the same line, selecting one removes the other option(s).
: Take the pawn >[CHECKMATE] : Take the knight >[OPPONENT CASTLES]
⬆ yields either a link to CHECKMATE or to OPPONENT CASTLES
Replacement text, as the name suggests, replaces the displayed text with something else when tapped. If in a scene, it must be placed at the end.
: Ask for a hint -[Avoid the mushrooms.]
⬆ “Ask for a hint” changes to “Avoid the mushrooms.”
If on the same line, selecting one replaces both.
: By land -[You hail a cab to the AIRPORT] : By boat -[The SS Minnow awaits at the DOCK]
⬆ results in links to either the AIRPORT or DOCK
Scene test checks whether a scene has been visited and branches accordingly. A branch may include a context link or varying text, or form a speech bubble.
: Test SCENE +[visited branch][not visited]
⬆ If SCENE has been visited, display "visited branch" otherwise display "not visited"
Nib Notes records scenes visited. Scene content suggests what is in, on, and around a character—such as feeling dizzy, carrying an umbrella, or laying on a beach.
SUMMIT
Dehydrated and desperate for oxygen, I sense that my health is lost to the climb. Yet here I am, at the top of the world, lower aching bones onto the coveted Peak Stone. And here I sit as contentment washes over me and elevates my spirit to the level of the clouds.
⬆ amounts to health=poor, happiness=high
SHERPA
My old friend looks with eyes that smile for making it this far. Eyes that wince with how much further there is to go.
: Test SUMMIT +[The helicopter will not arrive in time, but it does not matter. I am already in the heavens.][The mountain wins for now, but I vow to reach the summit next season.]
⬆ tests on the basis of health
Whether a scene has been visited can be tested. What happens in a scene—such as an allergic reaction, losing a locket, or an avalanche—can be checked indirectly by testing whether a scene has been shown. It depends on which scene is tested.
KITCHEN
I grab the truck key from the counter and step
^[☀️ OUTSIDE] ^[🍁 onto the PORCH]
OUTSIDE
and feel the autumn chill on my way to the PORCH | GARAGE.
PORCH
The porch is slippery when icy. I lose my footing—and the key.
: Return >[GO BACK]
GARAGE
Sliding into the driver’s seat …
: Test OUTSIDE +[I start the ignition with the key (since it is true that I was Outside).][I hop out to look for the key.]
: Test PORCH +[but have no key (since I visited the Porch and lost it there).][I start the truck (since I did not visit the Porch to lose the key).]
Varying text selects one option at random each time the scene is visited. Put the set of options in dashed braces separated by the pipe symbol: -{A|B|C|D}.
BACK DECK
The sky is -{clear|cloudy|dark at NIGHT}.
⬆ can include context links, such as to the NIGHT scene
The odds of any option showing is 1/(number of options). To vary the odds, repeat options.
COLOUR
: Pick one -{🔴|🔴|🟢|🔵}
⬆ the odds of 🔴 is 2/4 = 1/2 = 50%
Wordplay can affect the outcome. In this example, Heads does double duty as a direction (heads to the door) and side of a coin, so the odds of reaching Tails for the bonus and corner office is 1 out of 3.
JOB OFFER
The senior partner stares out the window as you review the contract.
: Does a bonus come with that? -[“What? The prestige of title isn't enough?” She flips a COIN onto her desk.] : Can I have a corner office? -[She closes the folder and HEADS to the door.]
COIN
The coin lands -{HEADS|TAILS} up.
HEADS
“I sense that you over-value your worth,” she says, opening the door for your exit.
TAILS
“But of course,” she replies. “A bonus and corner office.”
Varying text can be embedded.
: Hesperus -[Hesperus is -{Phosphorus|Venus}]
⬆ yields “Hesperus is Phosphorus” or “Hesperus is Venus”
SCENE ONE
You can take the HIGH ROAD or LOW ROAD.
⬆ using context links
At the moment I am feeling …
: noble >[HIGH ROAD] : mischievious >[LOW ROAD]
⬆ using alias links
RAFTING
The river bends gently toward the port of SPINDRIFT.
HIKING
The hills and vales lead you the town of SPINDRIFT.
SPINDRIFT
All roads lead to Rome … and to this lovely port town.
INVESTIGATE
Well, Holmes? What came of the museum diamond?
: "It was theft!" >[THEFT]
: "It was an inside job!" >[INSIDE JOB]
/* merge from "theft" */
THEFT
Then who did it?
: "Professor Moriarty!" >[REVEAL]
: "Mrs. Hudson!" >[REVEAL]
: "I did!" >[REVEAL]
REVEAL
You must be joking.
: I assure you, Watson, I am not. >[CERTAIN]
: If only it were a jest. >[CERTAIN]
/* merge from "inside job" */
INSIDE JOB
Are you certain, Holmes?
: Indeed, quite sure! >[CERTAIN]
: You question my judgment? >[CERTAIN]
/* merge from both branches */
CERTAIN
Raising an eyebrow at the great detective, Holmes said nothing.
YESTERDAY
The groundhog hoped TODAY would be different.
TODAY
But it was turning out the same as YESTERDAY.
TRAIN
Leads to FIRST CLASS and SECOND CLASS
FIRST CLASS
This leads to SECOND CLASS and STATION
SECOND CLASS
This leads to FIRST CLASS and STATION
STATION
End of the line.
First and second class are contained within the train arc. One way or the other, the train goes to the station. Sub-scenes are indented only for visual ease.
CASINO
I took a gamble with …
: the slot machine >[RESULT] : poker >[RESULT] : the roulette wheel >[RESULT]
RESULT
… and lost everything.
ESCAPE
Men shouting and dogs barking in the distance, I …
: run without looking behind. >[FLEE]
: listen, but hear no siren. >[FLEE]
: cross the stream to throw off the dogs. >[FLEE]
FLEE
The Benson’s barn, over the ridge. Sheila will have the engine running and two glorious tickets for anywhere but here.
: Reaching the barn, I glance inside. >[BARN]
: Still, no siren, that can only mean … >[BARN]
: “You can count on her,” my brother said. >[BARN]
BARN
The barn is empty. Sheila, is nowhere to be seen.
QUESTION ONE
Classify: “Education leads to ideas; ideas lead to opportunity.”
: Figures of speech >[GLOSSARY]
QUESTION TWO
Classify: “There isn’t a snowball’s chance in summer that I will vote for him again.”
: Figures of speech >[GLOSSARY]
GLOSSARY
**Adynaton**: An exaggeration to say something is impossible or a roundabout way of saying ‘no.’ Example: There isn’t a snowball’s chance in summer that I will vote for him again.
**Anacoluthon**: An interruption as if skipping ahead or losing the train of thought. Example: Rallies, we had so many rallies—the election had to be rigged.
**Anadiplosis**: Repeating the last word of one phrase as the first word of the next. Example: Coco had a problem and that problem wore size 13 shoes.
: Return to the previous scene >[GO BACK]
⬆ needed to return to the invoking scene
KITCHEN
…
: Examine the dining room >[DINING ROOM]
LIVING ROOM
…
: Examine the dining room >[DINING ROOM]
DINING ROOM
The dining room is cluttered yet organized, a reflection of Sir Reggie's mind. The cupboard's -{TOP|BOTTOM} drawer appears ajar but is otherwise unremarkable. What is remarkable is the Townsend clock in the corner. From this vantage, it appears to be stopped at the moment of -{the gardener's DEMISE|the ECLIPSE|MIDNIGHT}. The dining table looks to be -{OAK|PINE}, not in keeping with the walnut through the rest of the estate.
: Return to the previous scene >[GO BACK]
⬆ needed to return to the invoking scene
CROSS DATELINE
Scene about crossing the International date line.
: Watch shows wrong time >[RESET CLOCKS]
POWER OUTAGE
Scene about an electrical power outage.
: Plug-in clocks are off >[RESET CLOCKS]
DAYLIGHT SAVINGS
Scene about the advent of Daylight Savings Time.
: All the clocks are off >[RESET CLOCKS]
RESET CLOCKS
Deals with resetting the clocks, possibly with varying text.
: Return to the previous scene >[GO BACK]
⬅︎ remember
Tap a button. Close this Help pop-up. Tap Start.
Plot-ers and Pants-ers are rosters of story starters organized around these two approaches to writing.
tap Start ⬆︎
hypertext without tears